iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
AI & Data

時間管理大師-時間序列分析終極密技系列 第 7

[Day7]光陰易逝,豈容我怠-python終極指南:模組化的開發,副程式

  • 分享至 

  • xImage
  •  

到了今天,只要用用前日所學,想必各位都能寫出許多程式了,我們凡是先求有在求好,現在我們能寫出的程式屬於流水帳,意思就是毫無結構從上寫到下的程式,這種寫法一旦到大一點的程式就會遭遇瓶頸了,因此我們必須使用結構化、模組化的開發方式,今天所要認識的叫做副程式,也稱為函數、函式,其關鍵心法為:將程式包裝成一個區塊,需要時再呼叫出來使用,讓我們來揭露副程式的奧秘吧~

副程式

先建構副程式,才能使用副程式
沒錯,在使用副程式之前,必須要先建構,python建構副程式的方式非常簡單,它沒有C、JAVA宣告副程式時所需要的一堆關鍵字, python只需要使用def關鍵字即可宣告副程式,用法如下:

#定義函數
def 函數名稱():
	函數內部程式...

是不是非常簡單呢?
現在建構完了,我們要來使用它

#呼叫函數
函數名稱()

我們實際操作一次看看

# 定義副程式
def say_hi():
    print("Hi")
    
# 使用副程式
say_hi()
# 印出 "Hi"

令一個基本操作,帶參數呼叫,使用方法如下

#定義函數
def 函數名稱(參數名稱1, 參數名稱2,.....):
	函數內部程式

#呼叫函數
    函數名稱(參數1, 參數2,.....)

程式碼如下

# 定義副程式
def say(word):
    print(word +  "! friend")
    
# 使用副程式
say("Hi")

# 印出 "Hi! friend"

有回傳值的副程式

** return 傳出 回傳值,並強制結束函數**
回傳值就是副程式執行吐出的結果,我們可以在副程式中的內容使用return後面接要回傳的結果,並且把回傳的結果用一個變數接住,用法如下

#定義函數
def 函數名稱(參數名稱1, 參數名稱2,.....):
	函數內部程式
	return 回傳值
    
#呼叫函數
變數 = 函數名稱(參數1, 參數2,.....)

下面是輸入一個數字的參數,副程式會回傳該數字的階乘(3!、5!、等...)副程式

# 定義副程式
def factorial(num):
    ans = num
    num -= 1
    while num > 0 :
        ans *= num
        num -= 1
    return ans
    
# 使用副程式
a = say(6)
print(a)

# 印出  720

參數的操作

參數預設值

我們在定義副程式的時候,可以先給參數預設值,這樣當我呼叫復生是的時候,要是沒有下參數,副程式就會自己使用內建的參數預設值,用法如下

# 定義副程式
def dog(name = "小黑"):
	print(name)
# 使用副程式
dog()                #印出  小黑
dog("小白")      #印出  小白

多個參數

我們在定義副程式時可以宣告多個參數,呼叫時也必須依照參數的先後順序賦值,範例如下

# 定義副程式
def dinner(time, food):
    print("在" + time + ",吃" + food)
# 使用副程式    
dinner("八點", "達美樂")
 #印出  "在八點,吃達美樂"

如果沒有按照順序下參數,可能會出現以下不合邏輯的錯誤

# 定義副程式
def dinner(time, food):
    print("在" + time + ",吃" + food)
# 使用副程式    
dinner("達美樂", "八點")
 #印出  "在達美樂,吃八點"

我們可以看到上面的兩個參數下的順序反了,所以出現了我們預期以外的錯誤,如果非要不按照順序下參數,這時候要使用下面的技巧

指定參數賦值

在呼叫副程式時,指定參數的內容,操作如下

# 定義副程式
def dinner(time, food):
    print("在" + time + ",吃" + food)
# 使用副程式    
dinner(food = "達美樂", time = "八點")
 #印出  "在達美樂,吃八點"

主程式

C跟Java都有個主程式,而python是不需要主程式就能執行的,但主程式能幫助我們標記程式的進入點,進而達成模組化開發,沒有主程式的結果就是各行指令都是分散的,可能第一行是執行一條指令,接著第2、3...都是在定義副程式,而下一行要執行的指令卻在10多行,這樣會造成程式難以閱讀,因此這裡要來介紹主程式

if __name__ == "__main__":
    print("hello world")

if __name__ == "__main__":這個區塊的內容就是主程式,也就是程式的進入點,下面是範例

def say(word):
    return "Hey!" + word + "!"
    
if __name__ == "__main__":
    print(say("hello world"))
# 印出  "Hey!hello world!"

以上就是副程式的基本操作,學會這個之後就能模組化的開發程式囉,模組化開發是所有程式開發必定使用到的技巧,不但可以使程式可維護性更高,彈性更大,也比較具有可讀性,明天將會介紹更進階的模組化開發方式


上一篇
[Day6]流年似水-python終極指南:帶你的程式飛天遁地,流程控制精隨
下一篇
[Day8]遷延蹉跎,來日無多-python終極指南:模組和封包,外掛般的超能力
系列文
時間管理大師-時間序列分析終極密技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言